import java.io.*;
import java.util.*;

public final class Ejercicio3 implements Ejercicio
{
	public void execute(String strFileIn, String strFileOut)
	{
		//archivo entrada
		RandomAccessFile fin;
		//para borrar la salida anterior
		File foutDelete;
		//archivo salida
		RandomAccessFile fout;
		
		try
		{
			//abro el archivo
			fin = new RandomAccessFile(strFileIn,"r");
			
			//entrada y salida de cada problema
			int aint[], intLargo = 0, i;
			//buffer de entrada y salida
			String strOutBuffer = "", strInBuffer, strToken;
			//para recorrer la linea del arreglo
			StringTokenizer stk;
			
			do
			{
				//siguiente largo del arreglo
				strInBuffer = fin.readLine();
				
				if
				(
					//si levante una linea
					strInBuffer != null
					//y el largo del arreglo es mayor a 0
					&& ( intLargo = new Integer( strInBuffer ).intValue() ) > 0
				){
					//levanto la linea del arreglo
					strInBuffer = fin.readLine();
					
					if( intLargo > 0 && strInBuffer != null )
					{
						//creo el arreglo
						aint = new int[intLargo];
						i = 0;
						
						//levanto los elementos del arreglo
						stk = new StringTokenizer( strInBuffer, " " );
						
						//recorro los elementos
						while( stk.hasMoreTokens() )
						{
							//siguiente elemento
							strToken = stk.nextToken();
							
							//si no es un espacio
							if( strToken != "" && strToken != null )
							{
								aint[i] = new Integer( strToken ).intValue();
								i++;
							}
						}
						
						if( i == intLargo )
							strOutBuffer+= this.moda(aint, intLargo);
					}
					
					//siguiente linea de la salida
					if( strInBuffer != null )
						strOutBuffer+= "\n";
				}
			}
			while( strInBuffer != null && intLargo > 0 );
			
			//cierro el archivo
			fin.close();
			
			//borro el archivo de salida anterior
			foutDelete = new File(strFileOut);
			foutDelete.delete();
			
			//abro el archivo de salida
			fout = new RandomAccessFile(strFileOut,"rw");
			
			//paso el buffer de salida al archivo
			fout.writeBytes(strOutBuffer);
			
			//cierro el archivo de salida
			fout.close();
		}
		catch (IOException e)
		{
			//TODO: error abriendo archivo
		}
	}
	
	private int moda(int a[], int n)
	{
		int moda = 0, rep = 1, i = 0;
		
		while( i < n )
		{
			if( moda != a[i] )
			{
				if( rep == 1 )
					moda = a[i];
				else
					rep--;
			}
			else
			{
				rep++;
			}
			
			i++;
		}
		
		return moda;
	}
}
